/******************************************************
Cours:   LOG121
Session: A2013
Groupe:  04
Projet: Laboratoire #4
Étudiant(e)s: Fredy Alexander Bonilla, Renaud Vincent, Simon Castro

Professeur : Francis Cardinal
Nom du fichier: Menu.java
Date créé: 2013-11-22
Date dern. modif. 2013-12-03
 *******************************************************
Historique des modifications
 *******************************************************
2013-11-22 Version1
2013-11-26 Structuration du code et ajout des ecouteurs
 *******************************************************/

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/**
 * Classe dediee au menu. Differents elements y sont ajoutes et ceux-ci 
 * disposent d'ecouteurs relies au controleur.
 * @author Renaud
 */
public class Menu extends JMenuBar {

	private static final long serialVersionUID = 1L;

	private Controleur c;
	private JMenu menuFichier;
	private JMenuItem ouvrir;
	private JMenuItem sauvegarde;
	private JMenuItem nouvelleImage;

	/*
	 * Constructeur
	 */
	public Menu (Controleur c) {
		this.c = c;
		creerMenuFichier();
	}

	/**
	 * Methode creant le menu fichier. Il permet d'ouvrir une image et de
	 * sauvegarder une perspective. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!À completer
	 */
	public void creerMenuFichier () {
		menuFichier = new JMenu("Fichier");
		ouvrir = new JMenuItem("Ouvrir");
		sauvegarde = new JMenuItem("Sauvegarder");
		nouvelleImage = new JMenuItem("Ouvrir Nouvelle Image");

		menuFichier.add(ouvrir);
		menuFichier.add(sauvegarde);
		menuFichier.add(nouvelleImage);

		ouvrir.addActionListener(new MenuListener());
		sauvegarde.addActionListener(new MenuListener());
		nouvelleImage.addActionListener(new MenuListener());

		add(menuFichier);
	}


	/**
	 * Sous-classe dediee a ecouter les element du menu. Elle communique avec 
	 * le controleur.
	 * @author Renaud
	 */
	private class MenuListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {

			//Le menu pour ouvrir une nouvelle image est selectionne
			if(e.getSource() == nouvelleImage){
				JFileChooser fc = new JFileChooser();

				int returnValue = fc.showOpenDialog(Menu.this);

				if(returnValue == JFileChooser.APPROVE_OPTION){
					File fichier = fc.getSelectedFile();
					c.changerImage(fichier);
				}
			}

			//Le menu de sauvegarde est selectionne
			else if(e.getSource() == sauvegarde) {
				c.sauvegarde();
			}

			//Le menu pour ouvrir une perspective est selectionne
			else if(e.getSource() == ouvrir) {
				JFileChooser fc = new JFileChooser();

				int returnValue = fc.showOpenDialog(Menu.this);

				if(returnValue == JFileChooser.APPROVE_OPTION){
					File fichier = fc.getSelectedFile();
					c.ouvrir(fichier);
				}
			}	
		}
	}

}
